<!DOCTYPE html>
<html lang="en">
<head>
<title>NC.js REST API Documentation</title>

<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/custom.css">
</head>

<body>

<div class="container">

<H1>NC.js Documentation</H1>

<p>NC.js is the Web interface for the Digital Thread. It provides a
rich REST API for process and models plus a client that displays the
3D part models for machining workpiece, tools, CNC, as well as removal
simulation, PMI annotations, MTConnect positional data, QIF face
status, and other aspects of a Digital Twin on the Digital Thread.</p>


<figure>
<img class="img-responsive center-block" src="images/ncjs_structure.png" alt="NC.js Structure" />
<figcaption>NC.js Structure Overview</figcaption>
</figure>

<H2 id="structure">Package Structure</H2>

<div class="row">
<div class="col-md-6">
<p>The NC.js package is implemented in Javascript under the Apache
license, so the client and REST API may be customized as desired. The
REST API is built using the STEPNode module for Node.js. This module
wraps the STEP Tools commercial technology stack, which is a set of
native Windows/Linux/Mac libraries that read and write STEP and
STEP-NC models, does analysis, geometry manipulation, and material
removal simulation.</p>
</div>

<div class="col-md-6">
<ul>
<li><a href="https://github.com/steptools/NC.js">NC.js Github Package</a></li>
<li><a href="https://github.com/steptools/STEPNode">STEPNode Github Package</a></li>
<li><a href="https://www.steptools.com/support/">STEP Tools Software Stack</a></li>
</ul>
</div>
</div>


<H2>Running a Server</H2>
<div class="row">
<div class="col-md-6">
<div class="row">
<div class="col-md-6"><img class="img-responsive center-block" src="images/fishhead.png" alt="Thread Example" /></div>

<div class="col-md-6">
<p>Run your own server on a STEP-NC file to do material removal
simulation. </div>
</div>
</div>

<div class="col-md-6">
<ul>
<li><a href="build.html">Building and Starting the Server</a></li>
<li><a href="mtconnect.html">Using with MTConnect</a></li>
<li><a href="qif.html">Using with QIF</a></li>
<li><a href="makedata.html">Building Digital Thread Models from NX and Other Sources</a></li>
</ul>
</div>
</div>





<H2>API and Building Custom Apps</H2>

<div class="row">
<div class="col-md-6">
<p>Since the NC.js package is distributed as source, so you can modify
both the server and the client.   The server provides a 
<a href="api/index.html">REST API</a>.  The client loads workplan and
geometry data using that API and visualizes it using react.js
components.

<p>You can modify the react.js view components
to <a href="custom.html">build your own custom apps</a>, show data in
new ways, or modify the REST API on the server to extract additional
information, change information, and so on.
</div>

<div class="col-md-6">
<ul>
<li><a href="api/index.html">REST API Description</a></li>
<li><a href="custom.html">Building Custom Apps</a></li>
<li><a href="source_overview.html">NC.js Source Layout</a></li>
</ul>
</div>
</div>

</div>

<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</body>
</html>
